// POJ-3254 Corn Fields, USACO 2006 November Gold
// 陈锋
#include <cstdio>
const int MOD = 100000000;
int B[13], St[377], F[13][377];
int main() {
  int S = 1 << 12, k = 0;
  for (int i = 0; i < (1 << 12); i++)
    if (!(i & (i << 1))) St[k++] = i;  // 合法的行状态
  St[k] = S;

  int M, N, t;
  scanf("%d%d", &M, &N);
  for (int i = 0; i < M; i++)
    for (int j = 0; j < N; j++)
      scanf("%d", &t), B[i] = (B[i] << 1) | !t;  // 荒地

  S = 1 << N;
  for (int i = 0; St[i] < S; i++) if (!(B[0] & St[i])) F[0][i] = 1;  // 第0行
  for (int r = 1; r < M; r++)
    for (int i = 0; St[i] < S; i++) {  // 第r-1行状态
      if (B[r - 1] & St[i]) continue;
      for (int ri = 0; St[ri] < S; ri++) // 第r行状态
        if (!(B[r] & St[ri]) && !(St[i] & St[ri]))  // 不和上一行以及当前行荒地冲突
          (F[r][ri] += F[r - 1][i]) %= MOD;
    }

  int r = M - 1, ans = F[r][0];
  for (int i = 1; St[i] < S; i++)  // 处理最后一行
    ans = (ans + F[r][i]) % MOD;
  printf("%d\n", ans);
  return 0;
}
/*
每一行状态只影响下一行。
可以将所有合法的行状态都记录下来。(s&(s<<1))==0。荒地状态也记录下来。
F(r,s)，前r行，第r行状态已经决策成s，总共多少种方案。
转移：F(i,s) = ∑F(i-1,ls), s和ls的1的位置不重复
一行行递推即可，最后答案是∑F(M,s)
注意各种位运算技巧的运用。
*/
// Accepted 32ms 344kB 956 G++2020-12-08 21:17:59 22197221